// 1、全选插件
$.fn.extend({
    // 功能：全选反选（调用该函数的对象是父复选框）    // 
    // 参数：子复选框，反选按钮
    checkAllBind($subCheck,unBtn){
        this.change(()=>{
            // 此函数是事件处理函数，所以，this是事件源。
            this.checkAll($subCheck)
        });

        $subCheck.change(()=>{
            $subCheck.backCheck(this)
        });
        if(unBtn){
            unBtn.click(()=>{
                $subCheck.unCheck(this);
            });
        }        
    },
    // 正向控制
    checkAll:function($subCheck){
        // 此函数是对象的方法。
        // this: $("#checkallid")
        $subCheck.prop("checked",this.prop("checked"));
    },
    // 逆向控制
    // 参数：$parentCheck 全选的复选框
    backCheck($parentCheck){
        // this:是 $("#box :checkbox")
        let allCheck = true;
        for(let i=0;i<this.length;i++){
            if(!$(this[i]).prop("checked")){
                allCheck = false;
                break;
            }
        }
        $parentCheck.prop("checked",allCheck);
    },
    unCheck($parentCheck){
        // this :$("#box :checkbox")
        for(let i=0;i<this.length;i++){
            $(this[i]).prop("checked",!$(this[i]).prop("checked"));
        }
        this.backCheck($parentCheck);
    }
});

